operator fun <T, R, PO : SubjectBasedOption.DefinedOption<T, R, *>> invoke(subjectProvider: SubjectProvider<T>, subStep: PO.() -> Pair<() -> R, (T) -> R>, presentOptionFactory: () -> PO): R