public Object read(XMLStreamReader input) {
   try {
     return reader.read(input, null);
   } catch (Exception e) {
     throw new Fault(e);
   }
 }
  public Object read(MessagePartInfo part, XMLStreamReader input) {
    try {
      AegisType type = part.getProperty("org.apache.cxf.aegis.outerType", AegisType.class);
      if (type == null) {
        type = databinding.getType(part);
        return reader.read(input, type);
      } else {
        ArrayType arrayType = (ArrayType) type;
        return reader.readFlatArray(input, arrayType, part.getConcreteName());
      }

    } catch (Exception e) {
      throw new Fault(e);
    }
  }