private List<Metacard> createMetacardList(int start, int finish) {
    List<Metacard> list = new LinkedList<Metacard>();

    for (int i = start; i <= finish; i++) {
      MetacardImpl metacard = new MetacardImpl();

      metacard.setId(ID_PREFIX + i);
      metacard.setSourceId(SOURCE_PREFIX + i);
      metacard.setTitle(TITLE_PREFIX + i);
      // for testing a attribute with multiple values
      AttributeDescriptor ad =
          new AttributeDescriptorImpl(FORMAT, true, true, true, true, BasicTypes.STRING_TYPE);
      Set<AttributeDescriptor> ads =
          new HashSet<AttributeDescriptor>(metacard.getMetacardType().getAttributeDescriptors());
      ads.add(ad);
      metacard.setType(new MetacardTypeImpl("test", ads));
      metacard.setLocation(WKT);
      AttributeImpl attr = new AttributeImpl(FORMAT, FORMAT);
      attr.addValue(FORMAT);
      metacard.setAttribute(attr);
      // for testing a attribute with no attribute descriptor
      metacard.setAttribute(RELATION, RELATION);

      list.add(metacard);
    }

    return list;
  }
  public static Attribute unmarshalFrom(GeometryElement element) throws ConversionFailedException {
    AttributeImpl attribute = null;
    GML311ToJTSGeometryConverter converter = new GML311ToJTSGeometryConverter();
    WKTWriter wktWriter = new WKTWriter();

    for (Value xmlValue : element.getValue()) {
      JAXBElement<AbstractGeometryType> xmlGeometry = xmlValue.getGeometry();
      Geometry geometry =
          converter.createGeometry(new DefaultRootObjectLocator(xmlValue), xmlGeometry.getValue());
      String wkt = wktWriter.write(geometry);

      if (attribute == null) {
        attribute = new AttributeImpl(element.getName(), wkt);
      } else {
        attribute.addValue(wkt);
      }
    }
    return attribute;
  }