Interface IMyObject represents the original interface description specified by the user. The user may access an ARC object through this interface due to polymorphism. In such a case, only the member functions on the interface are visible (e.g. member function task(), and reference counting in this case). This interface is to be implemented by the applications programmer.