public void genFunctionOrProperty( @NotNull JetTypeParameterListOwner functionOrProperty, @NotNull ClassBuilder classBuilder) { FunctionCodegen functionCodegen = new FunctionCodegen(context, classBuilder, state, this); if (functionOrProperty instanceof JetNamedFunction) { try { functionCodegen.gen((JetNamedFunction) functionOrProperty); } catch (ProcessCanceledException e) { throw e; } catch (CompilationException e) { throw e; } catch (Exception e) { throw new CompilationException( "Failed to generate function " + functionOrProperty.getName(), e, functionOrProperty); } } else if (functionOrProperty instanceof JetProperty) { try { new PropertyCodegen(context, classBuilder, functionCodegen, this) .gen((JetProperty) functionOrProperty); } catch (ProcessCanceledException e) { throw e; } catch (CompilationException e) { throw e; } catch (Exception e) { throw new CompilationException( "Failed to generate property " + functionOrProperty.getName(), e, functionOrProperty); } } else { throw new IllegalArgumentException("Unknown parameter: " + functionOrProperty); } }