code: private void init(final SecurityContext securityContext, final Class type, final Field field, final String path) throws FrameworkException {
  
  		final QueryConfig config = getConfig(path);
  
  		config.handleTypeArguments(securityContext, type, field.getArguments());
  
  		final SelectionSet selectionSet = field.getSelectionSet();
  		if (selectionSet != null) {
  
  			for (final Selection selection : selectionSet.getSelections()) {
  
  				if (selection instanceof Field) {
  
  					final Field childField      = (Field)selection;
  					final SelectionSet childSet = childField.getSelectionSet();
  					final PropertyKey key       = StructrApp.key(type, childField.getName());
  					final Class relatedType     = key.relatedType() != null ? key.relatedType() : type;
  
  					// add field to property set
  					config.addPropertyKey(key);
  					config.handleFieldArguments(securityContext, relatedType, field, childField);
  
  					// recurse
  					if (childSet != null) {
  
  						init(securityContext, relatedType, childField, path + "/" + childField.getName());
  					}
  				}
  			}
  		}
  	}
docs: ----- private methods -----