docs: @SuppressWarnings({ "rawtypes", "unchecked" })
  	public NodeConfig parse(String nodeName, Object rootObject) throws MarshalException {
  		Class rootClass = rootObject.getClass();
  
  		if (TypeConver.isBesicType(rootClass)) {
  			return new NodeConfig(nodeName, rootObject.toString());
  		} else if (rootObject instanceof List) {
  			return new ListParser().parse(nodeName, (List) rootObject);
  		} else if (rootObject instanceof Map) {
  			return new MapParser().parse(nodeName, (Map) rootObject);
  		} else if (rootObject instanceof XmlText) {
  			return new NodeConfig(nodeName, rootObject);
  		} else if (rootObject instanceof CdataText) {
  			return new NodeConfig(nodeName, rootObject);
  		} else {
  			NodeConfig objConfig = null;
  			if (rootClass.isAnnotationPresent(Root.class)) {
  				objConfig = new AnnotationObjectParser().parse(nodeName, rootObject);
  			} else {
  				objConfig = new DefaultObjectParser().parse(rootObject);
  			}
  			List<Namespace> namespaces = objConfig.getNamespace();
  			for (Namespace namespace : namespaces) {
  				if (namespace != null && namespace.getPrefix() != null) {
  					this.namespaces.put(namespace.getPrefix(), namespace.getUri());
  				}
  			}
  			return objConfig;
  		}
  	}