// Path: navigation-fragment/src/main/java/com/github/dmcapps/navigationfragment/common/interfaces/Navigation.java
// public interface Navigation {
// 
//     String getNavTag();
// 
//     void setNavBundle(Bundle bundle);
//     Bundle getNavBundle();
// 
//     NavigationManager getNavigationManager();
// 
//     /**
//      * Begins a Transaction for presenting the next fragment allowing for overriding of animations, bundles, etc.
//      *
//      * @return
//      *      returns an instance of {@link PresentationTransaction} for the programmer to describe the next presentation
//      */
//     PresentationTransaction beginPresentation();
// 
//     /**
//      * Push a new Fragment onto the stack and presenting it to the screen
//      * Uses default animation of slide in from right and slide out to left.
//      *
//      * @param
//      *      navFragment -> The Fragment to show. It must be a Fragment that implements {@link Navigation}
//      */
//     void presentFragment(Navigation navFragment);
// 
//     /**
//      * Push a new Fragment onto the stack and presenting it to the screen
//      * Uses default animation of slide in from right and slide out to left.
//      * Sends a Bundle with the Fragment that can be retrieved using {@link Navigation#getNavBundle()}
//      *
//      * @param
//      *      navFragment -> The Fragment to show. It must be a Fragment that implements {@link Navigation}
//      * @param
//      *      navBundle -> Bundle to add to the presenting of the Fragment.
//      */
//     void presentFragment(Navigation navFragment, Bundle navBundle);
// 
//     /**
//      * Dimiss the current fragment off the top of the stack and dismiss it.
//      * Uses default animation of slide in from left and slide out to right animation.
//      */
//     void dismissFragment();
// 
//     /**
//      * Pop the current fragment off the top of the stack and dismiss it.
//      * Uses default animation of slide in from left and slide out to right animation.
//      *
//      * @param
//      *      navBundle -> The navigation bundle to add to the fragment after the pop occurs
//      */
//     void dismissFragment(Bundle navBundle);
// 
//     /**
//      * Dismiss all fragments to the given index in the stack
//      */
//     void dismissToIndex(int index);
// 
//     /**
//      * Dismiss all fragments from the stack until we reach the Root Fragment (the fragment at the min stack size)
//      */
//     void dismissToRoot();
// 
//     /**
//      * Remove all fragments from the stack including the Root. The add the given {@link Navigation}
//      * as the new root fragment. The definition of the Root Fragment is the Fragment at the min stack size position.
//      *
//      * @param
//      *      navFragment -> The fragment that you would like as the new Root of the stack.
//      */
//     void replaceRootFragment(Navigation navFragment);
// 
//     void setTitle(String title);
//     void setTitle(int resId);
//     String getTitle();
// 
//     boolean isPortrait();
//     boolean isTablet();
// }


import android.os.Bundle;
import android.support.annotation.NonNull;
import android.transition.Transition;
import android.view.View;
import com.github.dmcapps.navigationfragment.common.interfaces.Navigation;

    Transition getSharedElementReturnTransition() {
        return sharedElementReturnTransition;
    }

    public PresentationTransaction setNextFragmentEnterTransition(Transition transition) {
        nextFragmentEnterTransition = transition;
        return this;
    }

    Transition getNextFragmentEnterTransition() {
        return nextFragmentEnterTransition;
    }
    */

    public PresentationTransaction setCustomAnimations(int enter, int exit) {
        super.setCustomAnimations(enter, exit);
        return this;
    }

    public PresentationTransaction setCustomAnimations(int enter, int exit, int popEnter, int popExit) {
        super.setCustomAnimations(enter, exit, popEnter, popExit);
        return this;
    }

    public PresentationTransaction addSharedElement(View view, String name) {
        super.addSharedElement(view, name);
        return this;
    }

// Path: navigation-fragment/src/main/java/com/github/dmcapps/navigationfragment/common/interfaces/Navigation.java
// public interface Navigation {
// 
//     String getNavTag();
// 
//     void setNavBundle(Bundle bundle);
//     Bundle getNavBundle();
// 
//     NavigationManager getNavigationManager();
// 
//     /**
//      * Begins a Transaction for presenting the next fragment allowing for overriding of animations, bundles, etc.
//      *
//      * @return
//      *      returns an instance of {@link PresentationTransaction} for the programmer to describe the next presentation
//      */
//     PresentationTransaction beginPresentation();
// 
//     /**
//      * Push a new Fragment onto the stack and presenting it to the screen
//      * Uses default animation of slide in from right and slide out to left.
//      *
//      * @param
//      *      navFragment -> The Fragment to show. It must be a Fragment that implements {@link Navigation}
//      */
//     void presentFragment(Navigation navFragment);
// 
//     /**
//      * Push a new Fragment onto the stack and presenting it to the screen
//      * Uses default animation of slide in from right and slide out to left.
//      * Sends a Bundle with the Fragment that can be retrieved using {@link Navigation#getNavBundle()}
//      *
//      * @param
//      *      navFragment -> The Fragment to show. It must be a Fragment that implements {@link Navigation}
//      * @param
//      *      navBundle -> Bundle to add to the presenting of the Fragment.
//      */
//     void presentFragment(Navigation navFragment, Bundle navBundle);
// 
//     /**
//      * Dimiss the current fragment off the top of the stack and dismiss it.
//      * Uses default animation of slide in from left and slide out to right animation.
//      */
//     void dismissFragment();
// 
//     /**
//      * Pop the current fragment off the top of the stack and dismiss it.
//      * Uses default animation of slide in from left and slide out to right animation.
//      *
//      * @param
//      *      navBundle -> The navigation bundle to add to the fragment after the pop occurs
//      */
//     void dismissFragment(Bundle navBundle);
// 
//     /**
//      * Dismiss all fragments to the given index in the stack
//      */
//     void dismissToIndex(int index);
// 
//     /**
//      * Dismiss all fragments from the stack until we reach the Root Fragment (the fragment at the min stack size)
//      */
//     void dismissToRoot();
// 
//     /**
//      * Remove all fragments from the stack including the Root. The add the given {@link Navigation}
//      * as the new root fragment. The definition of the Root Fragment is the Fragment at the min stack size position.
//      *
//      * @param
//      *      navFragment -> The fragment that you would like as the new Root of the stack.
//      */
//     void replaceRootFragment(Navigation navFragment);
// 
//     void setTitle(String title);
//     void setTitle(int resId);
//     String getTitle();
// 
//     boolean isPortrait();
//     boolean isTablet();
// }


// Path: navigation-fragment/src/main/java/com/github/dmcapps/navigationfragment/common/core/PresentationTransaction.java
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.transition.Transition;
import android.view.View;
import com.github.dmcapps.navigationfragment.common.interfaces.Navigation;


    Transition getSharedElementReturnTransition() {
        return sharedElementReturnTransition;
    }

    public PresentationTransaction setNextFragmentEnterTransition(Transition transition) {
        nextFragmentEnterTransition = transition;
        return this;
    }

    Transition getNextFragmentEnterTransition() {
        return nextFragmentEnterTransition;
    }
    */

    public PresentationTransaction setCustomAnimations(int enter, int exit) {
        super.setCustomAnimations(enter, exit);
        return this;
    }

    public PresentationTransaction setCustomAnimations(int enter, int exit, int popEnter, int popExit) {
        super.setCustomAnimations(enter, exit, popEnter, popExit);
        return this;
    }

    public PresentationTransaction addSharedElement(View view, String name) {
        super.addSharedElement(view, name);
        return this;
    }

    public void presentFragment(Navigation navFragment) {