public final Operation createAndRegisterOperation(final String namedIdentifier, final ComponentType componentType, final Signature signature) { if (this.operationsByName.containsKey(namedIdentifier)) { throw new IllegalArgumentException("Element with name " + namedIdentifier + "exists already"); } final int id = this.getAndIncrementNextId(); final Operation newInst = new Operation(id, componentType, signature); this.operationsById.put(id, newInst); this.operationsByName.put(namedIdentifier, newInst); return newInst; }