private boolean marshalElement(String elementNs, String elementLocal, XSTypeDefinition type, boolean optional, boolean nillable, boolean declareNs, boolean declareXsiType) { Object value = stack.peek(); boolean result = value != null || value == null && (optional || nillable); boolean trace = log.isTraceEnabled() && result; if(trace) { String prefix = getPrefix(elementNs); log.trace("started element ns=" + elementNs + ", local=" + elementLocal + ", prefix=" + prefix); } if(value != null) { marshalElementType(elementNs, elementLocal, type, declareNs, nillable, declareXsiType); } else if(nillable) { writeNillable(elementNs, elementLocal, nillable); } if(trace) { log.trace("finished element ns=" + elementNs + ", local=" + elementLocal); } return result; }