class PopUpCoachMarkPresenter {

    protected void displayCoachMark() {
        CoachMarkPixelInfo coachMarkDimenInPixel = createCoachMarkPixelInfo();
        @PopUpPosition
        int popUpPosition = findCoachMarkTextPopUpDisplayPosition(mCoachMarkBuilder.getAnchorTop(),
                mCoachMarkBuilder.getAnchorBottom(),
                mCoachMarkBuilder.getUserDesiredPopUpPositionWithRespectToView(),
                coachMarkDimenInPixel);

        if (popUpPosition == PopUpPosition.NONE) {
            mPresentation.dismissWithError(
                    mStringResourceProvider.getStringFromResource(R.string.coachmark_no_position_found));
            return;
        }

        setTypeFaceForDismissButton(mCoachMarkBuilder.getFontStyleForDismissButton());
        setTypeFaceForCoachMarkText(mCoachMarkBuilder.getFontStyleForCoachMarkText());
        setGravityForCoachMarkText(mCoachMarkBuilder.getCoachMarkTextGravity());
        setMessageForCoachMarkText(mCoachMarkBuilder.getCoachMarkMessage());

        setNotchDisplayEdge(popUpPosition,
                mCoachMarkBuilder.getAnchorTop().y,
                mCoachMarkBuilder.getAnchorBottom().y,
                mCoachMarkBuilder.getAnchorTop().x,
                coachMarkDimenInPixel);
        detectAndCreateShimOutViews(mCoachMarkBuilder.getInfoForViewToMaskList());
        setImageParamsAndPosition(mCoachMarkBuilder.getAnchorTop(),
                mCoachMarkBuilder.getAnchorBottom(),
                coachMarkDimenInPixel.getImageWidthInPixels(),
                coachMarkDimenInPixel.getImageHeightInPixels(),
                mCoachMarkBuilder.getBackGroundTintForImage(),
                mCoachMarkBuilder.getImageDrawableRes());
        mPresentation.startAnimationOnImage(mCoachMarkBuilder.getAnimationOnImage());
        showCoachMark(mCoachMarkBuilder.getPopUpCoachMarkDismissButtonPosition(),
                popUpPosition);
    }

    public  PopUpCoachMarkPresenter(final IStringResourceProvider stringResourceProvider,
                                   final IDimensionResourceProvider dimensionResourceProvider,
                                   final ITypeFaceProvider typeFaceProvider,
                                   final IScreenInfoProvider screenInfoProvider);

}