def positions=(value)
      raise ArgumentError, "Argument 'value' must be defined (got #{value.class})." unless value
      if value.is_a?(Array)
        @positions = value
      else
        # Split the string, convert to float, and regroup the positions so they appear in pairs:
        positions = value.to_s.split("\\").collect {|str| str.to_f}
        if positions.length == 2
          @positions = [positions]
        else
          @positions = positions.each_slice(2).collect{|i| i}.transpose
        end
      end
    end
def positions=(value)
      raise ArgumentError, "Argument 'value' must be defined (got #{value.class})." unless value
      if value.is_a?(Array)
        @positions = value
      else
        # Split the string, convert to float, and regroup the positions so they appear in pairs:
        positions = value.to_s.split("\\").collect {|str| str.to_f}
        if positions.length == 2
          @positions = [positions]
        else
          @positions = positions.each_slice(2).collect{|i| i}.transpose
        end
      end
    end
Computes a hash code for this object.

 @note Two objects with the same attributes will have the same hash code.

 @return [Fixnum] the object's hash code

 Sets new leaf/jaw positions (an array with pairs of coordinates).

 @param [Array<String>, #to_s] value the leaf/jaw positions (300A,011C)