protected abstract void InternalEmit(Statement statement);
protected virtual void EmitStatement(Statement statement) { throw new LanguageException(LanguageException.Codes.UnknownStatementClass, statement.GetType().Name); }