public override PythonTypeSlot/*!*/ GetSlot() { List<MethodBase> meths = new List<MethodBase>(); foreach (MethodTracker mt in _trackers) { meths.Add(mt.Method); } MethodBase[] methods = meths.ToArray(); FunctionType ft = (PythonTypeOps.GetMethodFunctionType(DeclaringType, methods) | FunctionType.Method) & (~FunctionType.Function); if (_reversed) { ft |= FunctionType.ReversedOperator; } else { ft &= ~FunctionType.ReversedOperator; } // check if this operator is only availble after importing CLR (e.g. __getitem__ on functions) foreach (MethodInfo mi in methods) { if (!mi.IsDefined(typeof(PythonHiddenAttribute), false)) { ft |= FunctionType.AlwaysVisible; break; } } return PythonTypeOps.GetFinalSlotForFunction(PythonTypeOps.GetBuiltinFunction(DeclaringType, Name, ft, meths.ToArray() )); }