public <T extends Object> XNode createNode( final T nodeObject, final NodeMapping<T> nodeMapping, final InterpreterContext context) { boolean _isApplicable = nodeMapping.isApplicable(nodeObject); if (_isApplicable) { final IMappedElementDescriptor<T> descriptor = this.<T>getDescriptor(nodeObject, nodeMapping); boolean _equals = Objects.equal(descriptor, null); if (_equals) { return null; } boolean _isCreateDuplicateNodes = context.isCreateDuplicateNodes(); boolean _not = (!_isCreateDuplicateNodes); if (_not) { final XNode existingNode = context.getNode(descriptor); boolean _or = false; boolean _notEquals = (!Objects.equal(existingNode, null)); if (_notEquals) { _or = true; } else { boolean _isCreateNodes = context.isCreateNodes(); boolean _not_1 = (!_isCreateNodes); _or = _not_1; } if (_or) { return existingNode; } } final XNode node = nodeMapping.createNode(descriptor); XDiagramConfig _config = nodeMapping.getConfig(); _config.initialize(node); context.addNode(node); boolean _isCreateConnections = context.isCreateConnections(); if (_isCreateConnections) { List<AbstractConnectionMappingCall<?, T>> _incoming = nodeMapping.getIncoming(); final Consumer<AbstractConnectionMappingCall<?, T>> _function = (AbstractConnectionMappingCall<?, T> it) -> { boolean _isOnDemand = it.isOnDemand(); boolean _not_2 = (!_isOnDemand); if (_not_2) { final Procedure1<XConnection> _function_1 = (XConnection it_1) -> { it_1.setTarget(node); }; this.execute(it, nodeObject, _function_1, context); } }; _incoming.forEach(_function); List<AbstractConnectionMappingCall<?, T>> _outgoing = nodeMapping.getOutgoing(); final Consumer<AbstractConnectionMappingCall<?, T>> _function_1 = (AbstractConnectionMappingCall<?, T> it) -> { boolean _isOnDemand = it.isOnDemand(); boolean _not_2 = (!_isOnDemand); if (_not_2) { final Procedure1<XConnection> _function_2 = (XConnection it_1) -> { it_1.setSource(node); }; this.execute(it, nodeObject, _function_2, context); } }; _outgoing.forEach(_function_1); } List<AbstractLabelMappingCall<?, T>> _labels = nodeMapping.getLabels(); final Consumer<AbstractLabelMappingCall<?, T>> _function_2 = (AbstractLabelMappingCall<?, T> it) -> { ObservableList<XLabel> _labels_1 = node.getLabels(); Iterable<? extends XLabel> _execute = this.execute(it, nodeObject); Iterables.<XLabel>addAll(_labels_1, _execute); }; _labels.forEach(_function_2); if ((node instanceof XDiagramContainer)) { DiagramMappingCall<?, T> _nestedDiagram = nodeMapping.getNestedDiagram(); XDiagram _execute = null; if (_nestedDiagram != null) { XDiagram _xDiagram = new XDiagram(); InterpreterContext _interpreterContext = new InterpreterContext(_xDiagram, context); _execute = this.execute(_nestedDiagram, nodeObject, _interpreterContext); } ((XDiagramContainer) node).setInnerDiagram(_execute); } return node; } else { return null; } }