JPanel bottomPanel = new JPanel(new BorderLayout()); bottomPanel.setBorder(new SingleSideEtchedBorder(SwingConstants.TOP)); JPanel buttonPanel = new JPanel(new GridLayout(1, 2, 6, 0)); buttonPanel.setBorder(BorderFactory.createEmptyBorder(12, 12, 12, 12)); ButtonWithMnemonic okButton = new ButtonWithMnemonic(MailResourceLoader .getString("global", "ok")); okButton.setActionCommand("CLOSE"); //$NON-NLS-1$ okButton.addActionListener(this); buttonPanel.add(okButton); ButtonWithMnemonic cancelButton = new ButtonWithMnemonic( MailResourceLoader.getString("global", "cancel")); cancelButton.setActionCommand("CANCEL"); //$NON-NLS-1$ cancelButton.addActionListener(this); buttonPanel.add(cancelButton); ButtonWithMnemonic helpButton = new ButtonWithMnemonic( MailResourceLoader.getString("global", "help")); buttonPanel.add(helpButton); bottomPanel.add(buttonPanel, BorderLayout.EAST); getContentPane().add(bottomPanel, BorderLayout.SOUTH); getRootPane().setDefaultButton(okButton); getRootPane().registerKeyboardAction(this, "CANCEL", KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_IN_FOCUSED_WINDOW); // associate with JavaHelp HelpManager.getInstance().enableHelpOnButton(helpButton, "organizing_and_managing_your_email_3"); HelpManager.getInstance().enableHelpKey(getRootPane(), "organizing_and_managing_your_email_3");
JPanel bottom = new JPanel(new BorderLayout()); bottom.setBorder(new SingleSideEtchedBorder(SwingConstants.TOP)); JPanel buttonPanel = new JPanel(new GridLayout(1, 3, 6, 0)); buttonPanel.setBorder(BorderFactory.createEmptyBorder(12, 12, 12, 12)); searchButton = new JButton(MailResourceLoader.getString("dialog", "filter", "search")); searchButton.setIcon(ImageLoader.getIcon(IconKeys.SEARCH)); searchButton.addActionListener(this); searchButton.setActionCommand("SEARCH"); buttonPanel.add(searchButton); ButtonWithMnemonic closeButton = new ButtonWithMnemonic( MailResourceLoader.getString("global", "close")); closeButton.addActionListener(this); closeButton.setActionCommand("CLOSE"); buttonPanel.add(closeButton); ButtonWithMnemonic helpButton = new ButtonWithMnemonic( MailResourceLoader.getString("global", "help")); helpButton.addActionListener(this); helpButton.setActionCommand("HELP"); helpButton.setEnabled(false); buttonPanel.add(helpButton); bottom.add(buttonPanel, BorderLayout.EAST); getRootPane().setDefaultButton(searchButton); getRootPane().registerKeyboardAction(this, "CLOSE", KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_IN_FOCUSED_WINDOW); return bottom;
Clone fragments detected by clone detection tool
File path: /columba-1.4-src/mail/src/main/java/org/columba/mail/gui/config/filter/FilterDialog.java File path: /columba-1.4-src/mail/src/main/java/org/columba/mail/gui/config/search/SearchFrame.java
Method name: void createBottomPanel() Method name: JPanel createBottomPanel()
Number of AST nodes: 20 Number of AST nodes: 22
1
JPanel bottomPanel = new JPanel(new BorderLayout());
1
JPanel bottom = new JPanel(new BorderLayout());
2
		bottomPanel.setBorder(new SingleSideEtchedBorder(SwingConstants.TOP));
2
		bottom.setBorder(new SingleSideEtchedBorder(SwingConstants.TOP));
3
		JPanel buttonPanel = new JPanel(new GridLayout(1, 2, 6, 0));
3
		JPanel buttonPanel = new JPanel(new GridLayout(1, 3, 6, 0));
4
		buttonPanel.setBorder(BorderFactory.createEmptyBorder(12, 12, 12, 12));
4
		buttonPanel.setBorder(BorderFactory.createEmptyBorder(12, 12, 12, 12));
5
		ButtonWithMnemonic okButton = new ButtonWithMnemonic(MailResourceLoader
5
		searchButton = new JButton(MailResourceLoader
6
				.getString("global", "ok
6
.getString("dialog",
7
"));
7
				"filter", "search"));
8
		okButton.setActionCommand("CLOSE"); //$NON-NLS-1$
8
		searchButton.set
9
		okButton.addActionListener(this
9
Icon(ImageLoader.getIcon(IconKeys.SEARCH));
10
		searchButton.addActionListener(this);
10
);
11
		searchButton.setActionCommand("SEARCH");
11
		buttonPanel.add(okButton);
12
		buttonPanel.add(searchButton);
12
		ButtonWithMnemonic cancelButton = new ButtonWithMnemonic(
13
		ButtonWithMnemonic closeButton = new ButtonWithMnemonic(
13
				MailResourceLoader.getString("global", "cancel"));
14
				MailResourceLoader.getString("global", "close"));
14
		cancelButton.setActionCommand("CANCEL"); //$NON-NLS-1$
15
		closeButton.addAction
15
		cancel
16
Listener(this);
16
Button.addActionListener(this);
17
		closeButton.setActionCommand("CLOSE");
17
		buttonPanel.add(cancelButton);
18
		buttonPanel.add(closeButton);
18
		ButtonWithMnemonic helpButton = new ButtonWithMnemonic(
19
		ButtonWithMnemonic helpButton = new ButtonWithMnemonic(
19
				MailResourceLoader.getString("global", "help"));
20
				MailResourceLoader.getString("global", "help"));
20
		buttonPanel.add(helpButton);
21
		
21
		bottomPanel.add(buttonPanel, BorderLayout.EAST);
22
		getContentPane()
22
helpButton.addActionListener(this);
23
		helpButton.setActionCommand("HELP");
24
		helpButton.setEnabled(false);
25
		buttonPanel.add(helpButton);
23
.add(bottomPanel, BorderLayout.SOUTH);
26
		bottom.add(buttonPanel, BorderLayout.EAST);
24
		getRootPane().setDefaultButton(okButton);
27
		getRootPane().setDefaultButton(searchButton);
25
		getRootPane().registerKeyboardAction(this, "CANCEL",
28
		getRootPane().registerKeyboardAction(this, "CLOSE",
26
				KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0),
29
				KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0),
27
				JComponent.WHEN_IN_FOCUSED_WINDOW);
30
				JComponent.WHEN_IN_FOCUSED_WINDOW);
28
		// associate with JavaHelp
31
		
29
		HelpManager.getInstance().enableHelpOnButton(helpButton,
30
				"organizing_and_managing_your_email_3");
31
		HelpManager.getInstance().enableHelpKey(getRootPane(),
32
				"organizing_and_managing_your_email_3");
32
return bottom;
Summary
Number of common nesting structure subtrees1
Number of refactorable cases0
Number of non-refactorable cases1
Time elapsed for finding largest common nesting structure subtrees (ms)0.0
Clones locationClones are in different classes having the same super class
Number of node comparisons145
  1. {Non-refactorable}
    Mapping Summary
    Number of mapped statements17
    Number of unmapped statements in the first code fragment3
    Number of unmapped statements in the second code fragment5
    Time elapsed for statement mapping (ms)0.0
    Clone typeType 3
    Mapped Statements
    ID Statement ID Statement
    1
    JPanel bottomPanel = new JPanel(new BorderLayout());
    1
    JPanel bottomPanel = new JPanel(new BorderLayout());
    1
    JPanel bottom = new JPanel(new BorderLayout());
    Differences
    Expression1Expression2Difference
    bottomPanelbottomVARIABLE_NAME_MISMATCH
    1
    JPanel bottom = new JPanel(new BorderLayout());
    2
    bottomPanel.setBorder(new SingleSideEtchedBorder(SwingConstants.TOP));
    2
    bottomPanel.setBorder(new SingleSideEtchedBorder(SwingConstants.TOP));
    2
    bottom.setBorder(new SingleSideEtchedBorder(SwingConstants.TOP));
    Differences
    Expression1Expression2Difference
    bottomPanelbottomVARIABLE_NAME_MISMATCH
    2
    bottom.setBorder(new SingleSideEtchedBorder(SwingConstants.TOP));
    3
    JPanel buttonPanel = new JPanel(new GridLayout(1, 2, 6, 0));
    3
    JPanel buttonPanel = new JPanel(new GridLayout(1, 2, 6, 0));
    3
    JPanel buttonPanel = new JPanel(new GridLayout(1, 3, 6, 0));
    Differences
    Expression1Expression2Difference
    23LITERAL_VALUE_MISMATCH
    3
    JPanel buttonPanel = new JPanel(new GridLayout(1, 3, 6, 0));
    4
    buttonPanel.setBorder(BorderFactory.createEmptyBorder(12, 12, 12, 12));
    4
    buttonPanel.setBorder(BorderFactory.createEmptyBorder(12, 12, 12, 12));
                                                                                                                                                                                
    5
    searchButton = new JButton(MailResourceLoader.getString("dialog", "filter", "search"));
    Preondition Violations
    Unmatched statement searchButton=new JButton(MailResourceLoader.getString("dialog","filter","search")); cannot be moved before the extracted code, because it has control dependencies from statements that will be extracted
    5
    searchButton = new JButton(MailResourceLoader.getString("dialog", "filter", "search"));
                                                                                    
    7
    searchButton.addActionListener(this);
    Preondition Violations
    Unmatched statement searchButton.addActionListener(this); cannot be moved before the extracted code, because it has control dependencies from statements that will be extracted
    7
    searchButton.addActionListener(this);
                                                                                          
    8
    searchButton.setActionCommand("SEARCH");
    5
    ButtonWithMnemonic okButton = new ButtonWithMnemonic(MailResourceLoader.getString("global", "ok"));
    5
    ButtonWithMnemonic okButton = new ButtonWithMnemonic(MailResourceLoader.getString("global", "ok"));
    10
    ButtonWithMnemonic closeButton = new ButtonWithMnemonic(MailResourceLoader.getString("global", "close"));
    Differences
    Expression1Expression2Difference
    okButtoncloseButtonVARIABLE_NAME_MISMATCH
    "ok""close"LITERAL_VALUE_MISMATCH
    10
    ButtonWithMnemonic closeButton = new ButtonWithMnemonic(MailResourceLoader.getString("global", "close"));
    6
    okButton.setActionCommand("CLOSE");
    6
    okButton.setActionCommand("CLOSE");
    12
    closeButton.setActionCommand("CLOSE");
    Differences
    Expression1Expression2Difference
    okButtoncloseButtonVARIABLE_NAME_MISMATCH
    Preondition Violations
    Expression okButton cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression closeButton cannot be parameterized, because it has dependencies to/from statements that will be extracted
    12
    closeButton.setActionCommand("CLOSE");
    7
    okButton.addActionListener(this);
    7
    okButton.addActionListener(this);
    11
    closeButton.addActionListener(this);
    Differences
    Expression1Expression2Difference
    okButtoncloseButtonVARIABLE_NAME_MISMATCH
    Preondition Violations
    Expression okButton cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression closeButton cannot be parameterized, because it has dependencies to/from statements that will be extracted
    11
    closeButton.addActionListener(this);
    8
    buttonPanel.add(okButton);
    8
    buttonPanel.add(okButton);
    9
    buttonPanel.add(searchButton);
    Differences
    Expression1Expression2Difference
    okButtonsearchButtonVARIABLE_NAME_MISMATCH
    org.columba.core.gui.base.ButtonWithMnemonicjavax.swing.JButtonSUBCLASS_TYPE_MISMATCH
    Preondition Violations
    Expression okButton cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression searchButton cannot be parameterized, because it has dependencies to/from statements that will be extracted
    9
    buttonPanel.add(searchButton);
    9
    ButtonWithMnemonic cancelButton = new ButtonWithMnemonic(MailResourceLoader.getString("global", "cancel"));
    9
    ButtonWithMnemonic cancelButton = new ButtonWithMnemonic(MailResourceLoader.getString("global", "cancel"));
    14
    ButtonWithMnemonic helpButton = new ButtonWithMnemonic(MailResourceLoader.getString("global", "help"));
    Differences
    Expression1Expression2Difference
    cancelButtonhelpButtonVARIABLE_NAME_MISMATCH
    "cancel""help"LITERAL_VALUE_MISMATCH
    14
    ButtonWithMnemonic helpButton = new ButtonWithMnemonic(MailResourceLoader.getString("global", "help"));
    10
    cancelButton.setActionCommand("CANCEL");
    10
    cancelButton.setActionCommand("CANCEL");
    16
    helpButton.setActionCommand("HELP");
    Differences
    Expression1Expression2Difference
    "CANCEL""HELP"LITERAL_VALUE_MISMATCH
    cancelButtonhelpButtonVARIABLE_NAME_MISMATCH
    Preondition Violations
    Expression cancelButton cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression helpButton cannot be parameterized, because it has dependencies to/from statements that will be extracted
    16
    helpButton.setActionCommand("HELP");
    11
    cancelButton.addActionListener(this);
    11
    cancelButton.addActionListener(this);
    15
    helpButton.addActionListener(this);
    Differences
    Expression1Expression2Difference
    cancelButtonhelpButtonVARIABLE_NAME_MISMATCH
    Preondition Violations
    Expression cancelButton cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression helpButton cannot be parameterized, because it has dependencies to/from statements that will be extracted
    15
    helpButton.addActionListener(this);
    12
    buttonPanel.add(cancelButton);
    12
    buttonPanel.add(cancelButton);
    13
    buttonPanel.add(closeButton);
    Differences
    Expression1Expression2Difference
    cancelButtoncloseButtonVARIABLE_NAME_MISMATCH
    Preondition Violations
    Expression cancelButton cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression closeButton cannot be parameterized, because it has dependencies to/from statements that will be extracted
    13
    buttonPanel.add(closeButton);
    13
    ButtonWithMnemonic helpButton = new ButtonWithMnemonic(MailResourceLoader.getString("global", "help"));
    13
    ButtonWithMnemonic helpButton = new ButtonWithMnemonic(MailResourceLoader.getString("global", "help"));
    Preondition Violations
    Unmatched statement ButtonWithMnemonic helpButton=new ButtonWithMnemonic(MailResourceLoader.getString("global","help")); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted
                                                                                                                                                                                                                    
                                                                      
    17
    helpButton.setEnabled(false);
    Preondition Violations
    Unmatched statement helpButton.setEnabled(false); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted
    17
    helpButton.setEnabled(false);
    14
    buttonPanel.add(helpButton);
    18
    buttonPanel.add(helpButton);
    15
    bottomPanel.add(buttonPanel, BorderLayout.EAST);
    15
    bottomPanel.add(buttonPanel, BorderLayout.EAST);
    19
    bottom.add(buttonPanel, BorderLayout.EAST);
    Differences
    Expression1Expression2Difference
    bottomPanelbottomVARIABLE_NAME_MISMATCH
    19
    bottom.add(buttonPanel, BorderLayout.EAST);
    16
    getContentPane().add(bottomPanel, BorderLayout.SOUTH);
    16
    getContentPane().add(bottomPanel, BorderLayout.SOUTH);
    6
    searchButton.setIcon(ImageLoader.getIcon(IconKeys.SEARCH));
    Differences
    Expression1Expression2Difference
    addsetIconMETHOD_INVOCATION_NAME_MISMATCH
    java.awt.Containerjavax.swing.JButtonSUBCLASS_TYPE_MISMATCH
    getContentPane()searchButtonTYPE_COMPATIBLE_REPLACEMENT
    getContentPane().add(bottomPanel,BorderLayout.SOUTH)searchButton.setIcon(ImageLoader.getIcon(IconKeys.SEARCH))ARGUMENT_NUMBER_MISMATCH
    Preondition Violations
    Expression getContentPane().add(bottomPanel,BorderLayout.SOUTH) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression searchButton.setIcon(ImageLoader.getIcon(IconKeys.SEARCH)) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression getContentPane().add(bottomPanel,BorderLayout.SOUTH) is a void method call, and thus it cannot be parameterized
    Expression searchButton.setIcon(ImageLoader.getIcon(IconKeys.SEARCH)) is a void method call, and thus it cannot be parameterized
    Expression searchButton cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression getContentPane() cannot be unified with expression searchButton , because common superclass java.awt.Container does not declare member(s) public void setIcon(javax.swing.Icon)
    Expression getContentPane().add(bottomPanel,BorderLayout.SOUTH) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression searchButton.setIcon(ImageLoader.getIcon(IconKeys.SEARCH)) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression getContentPane().add(bottomPanel,BorderLayout.SOUTH) is a void method call, and thus it cannot be parameterized
    Expression searchButton.setIcon(ImageLoader.getIcon(IconKeys.SEARCH)) is a void method call, and thus it cannot be parameterized
    6
    searchButton.setIcon(ImageLoader.getIcon(IconKeys.SEARCH));
    17
    getRootPane().setDefaultButton(okButton);
    17
    getRootPane().setDefaultButton(okButton);
    20
    getRootPane().setDefaultButton(searchButton);
    Differences
    Expression1Expression2Difference
    okButtonsearchButtonVARIABLE_NAME_MISMATCH
    org.columba.core.gui.base.ButtonWithMnemonicjavax.swing.JButtonSUBCLASS_TYPE_MISMATCH
    Preondition Violations
    Expression okButton cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression searchButton cannot be parameterized, because it has dependencies to/from statements that will be extracted
    20
    getRootPane().setDefaultButton(searchButton);
    18
    getRootPane().registerKeyboardAction(this, "CANCEL", KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_IN_FOCUSED_WINDOW);
    18
    getRootPane().registerKeyboardAction(this, "CANCEL", KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_IN_FOCUSED_WINDOW);
    21
    getRootPane().registerKeyboardAction(this, "CLOSE", KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_IN_FOCUSED_WINDOW);
    Differences
    Expression1Expression2Difference
    "CANCEL""CLOSE"LITERAL_VALUE_MISMATCH
    21
    getRootPane().registerKeyboardAction(this, "CLOSE", KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_IN_FOCUSED_WINDOW);
    19
    HelpManager.getInstance().enableHelpOnButton(helpButton, "organizing_and_managing_your_email_3");
    19
    HelpManager.getInstance().enableHelpOnButton(helpButton, "organizing_and_managing_your_email_3");
    Preondition Violations
    Unmatched statement HelpManager.getInstance().enableHelpOnButton(helpButton,"organizing_and_managing_your_email_3"); cannot be moved before the extracted code, because it has control dependencies from statements that will be extracted
                                                                                                                                                                                                            
    20
    HelpManager.getInstance().enableHelpKey(getRootPane(), "organizing_and_managing_your_email_3");
    20
    HelpManager.getInstance().enableHelpKey(getRootPane(), "organizing_and_managing_your_email_3");
    Preondition Violations
    Unmatched statement HelpManager.getInstance().enableHelpKey(getRootPane(),"organizing_and_managing_your_email_3"); cannot be moved before the extracted code, because it has control dependencies from statements that will be extracted
                                                                                                                                                                                                        
                                        
    22
    return bottom;
    Preondition Violations
    Unmatched statement return bottom; cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted
    Unmatched return bottom;
    22
    return bottom;
    Precondition Violations (33)
    Row Violation
    1Unmatched statement searchButton=new JButton(MailResourceLoader.getString("dialog","filter","search")); cannot be moved before the extracted code, because it has control dependencies from statements that will be extracted
    2Unmatched statement searchButton.addActionListener(this); cannot be moved before the extracted code, because it has control dependencies from statements that will be extracted
    3Expression okButton cannot be parameterized, because it has dependencies to/from statements that will be extracted
    4Expression closeButton cannot be parameterized, because it has dependencies to/from statements that will be extracted
    5Expression okButton cannot be parameterized, because it has dependencies to/from statements that will be extracted
    6Expression closeButton cannot be parameterized, because it has dependencies to/from statements that will be extracted
    7Expression okButton cannot be parameterized, because it has dependencies to/from statements that will be extracted
    8Expression searchButton cannot be parameterized, because it has dependencies to/from statements that will be extracted
    9Expression cancelButton cannot be parameterized, because it has dependencies to/from statements that will be extracted
    10Expression helpButton cannot be parameterized, because it has dependencies to/from statements that will be extracted
    11Expression cancelButton cannot be parameterized, because it has dependencies to/from statements that will be extracted
    12Expression helpButton cannot be parameterized, because it has dependencies to/from statements that will be extracted
    13Expression cancelButton cannot be parameterized, because it has dependencies to/from statements that will be extracted
    14Expression closeButton cannot be parameterized, because it has dependencies to/from statements that will be extracted
    15Unmatched statement ButtonWithMnemonic helpButton=new ButtonWithMnemonic(MailResourceLoader.getString("global","help")); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted
    16Unmatched statement helpButton.setEnabled(false); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted
    17Expression getContentPane().add(bottomPanel,BorderLayout.SOUTH) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    18Expression searchButton.setIcon(ImageLoader.getIcon(IconKeys.SEARCH)) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    19Expression getContentPane().add(bottomPanel,BorderLayout.SOUTH) is a void method call, and thus it cannot be parameterized
    20Expression searchButton.setIcon(ImageLoader.getIcon(IconKeys.SEARCH)) is a void method call, and thus it cannot be parameterized
    21Expression searchButton cannot be parameterized, because it has dependencies to/from statements that will be extracted
    22Expression getContentPane() cannot be unified with expression searchButton , because common superclass java.awt.Container does not declare member(s) public void setIcon(javax.swing.Icon)
    23Expression getContentPane().add(bottomPanel,BorderLayout.SOUTH) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    24Expression searchButton.setIcon(ImageLoader.getIcon(IconKeys.SEARCH)) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    25Expression getContentPane().add(bottomPanel,BorderLayout.SOUTH) is a void method call, and thus it cannot be parameterized
    26Expression searchButton.setIcon(ImageLoader.getIcon(IconKeys.SEARCH)) is a void method call, and thus it cannot be parameterized
    27Expression okButton cannot be parameterized, because it has dependencies to/from statements that will be extracted
    28Expression searchButton cannot be parameterized, because it has dependencies to/from statements that will be extracted
    29Unmatched statement HelpManager.getInstance().enableHelpOnButton(helpButton,"organizing_and_managing_your_email_3"); cannot be moved before the extracted code, because it has control dependencies from statements that will be extracted
    30Unmatched statement HelpManager.getInstance().enableHelpKey(getRootPane(),"organizing_and_managing_your_email_3"); cannot be moved before the extracted code, because it has control dependencies from statements that will be extracted
    31Unmatched statement return bottom; cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted
    32Unmatched return bottom;
    33Clone fragment #1 returns variables , while Clone fragment #2 returns variables helpButton, bottom