<p dir="auto">This code <strong>does not</strong> compile (<a href="http://is.gd/uKBOfD" rel="nofollow">playpen</a>):</p>
<div class="highlight highlight-source-rust notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="pub mod mymod{

    mod foo {

        pub trait ToFoo{
            fn to_foo(self) -&gt; i32;
        }
    }
    pub use self::foo::ToFoo;

}

pub fn foobar&lt;T: mymod::ToFoo&gt;(x: T) {
    let v = x.to_foo();
}

fn main() {}"><pre class="notranslate"><span class="pl-k">pub</span> <span class="pl-k">mod</span> mymod<span class="pl-kos">{</span>

    <span class="pl-k">mod</span> foo <span class="pl-kos">{</span>

        <span class="pl-k">pub</span> <span class="pl-k">trait</span> <span class="pl-smi">ToFoo</span><span class="pl-kos">{</span>
            <span class="pl-k">fn</span> <span class="pl-en">to_foo</span><span class="pl-kos">(</span><span class="pl-smi">self</span><span class="pl-kos">)</span> -&gt; <span class="pl-smi">i32</span><span class="pl-kos">;</span>
        <span class="pl-kos">}</span>
    <span class="pl-kos">}</span>
    <span class="pl-k">pub</span> <span class="pl-k">use</span> <span class="pl-k">self</span><span class="pl-kos">::</span>foo<span class="pl-kos">::</span><span class="pl-v">ToFoo</span><span class="pl-kos">;</span>

<span class="pl-kos">}</span>

<span class="pl-k">pub</span> <span class="pl-k">fn</span> <span class="pl-en">foobar</span><span class="pl-kos">&lt;</span><span class="pl-smi">T</span><span class="pl-kos">:</span> mymod<span class="pl-kos">::</span><span class="pl-smi">ToFoo</span><span class="pl-kos">&gt;</span><span class="pl-kos">(</span><span class="pl-s1">x</span><span class="pl-kos">:</span> <span class="pl-smi">T</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
    <span class="pl-k">let</span> v = x<span class="pl-kos">.</span><span class="pl-en">to_foo</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
<span class="pl-kos">}</span>

<span class="pl-k">fn</span> <span class="pl-en">main</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-kos">{</span><span class="pl-kos">}</span></pre></div>
<p dir="auto">Output:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="&lt;anon&gt;:14:13: 14:23 error: source trait is inaccessible
&lt;anon&gt;:14     let v = x.to_foo();
                      ^~~~~~~~~~
&lt;anon&gt;:14:13: 14:23 note: module `foo` is private
&lt;anon&gt;:14     let v = x.to_foo();
                      ^~~~~~~~~~
error: aborting due to previous error
playpen: application terminated with error code 101"><pre class="notranslate"><code class="notranslate">&lt;anon&gt;:14:13: 14:23 error: source trait is inaccessible
&lt;anon&gt;:14     let v = x.to_foo();
                      ^~~~~~~~~~
&lt;anon&gt;:14:13: 14:23 note: module `foo` is private
&lt;anon&gt;:14     let v = x.to_foo();
                      ^~~~~~~~~~
error: aborting due to previous error
playpen: application terminated with error code 101
</code></pre></div>
<p dir="auto">Strangely as <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bluss/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bluss">@bluss</a> pointed out on IRC, this style <em>does</em> compile (<a href="http://is.gd/2GABjB" rel="nofollow">playpen</a>):</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="pub mod mymod{

    mod foo {

        pub trait ToFoo{
            fn to_foo(self) -&gt; i32;
        }
    }
    pub use self::foo::ToFoo;

}

use mymod::ToFoo;

pub fn foobar&lt;T: ToFoo&gt;(x: T) {
    let v = ToFoo::to_foo(x);
}

fn main() {}"><pre class="notranslate"><code class="notranslate">pub mod mymod{

    mod foo {

        pub trait ToFoo{
            fn to_foo(self) -&gt; i32;
        }
    }
    pub use self::foo::ToFoo;

}

use mymod::ToFoo;

pub fn foobar&lt;T: ToFoo&gt;(x: T) {
    let v = ToFoo::to_foo(x);
}

fn main() {}
</code></pre></div>
<h3 dir="auto">STR</h3>
<div class="highlight highlight-source-rust notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="use array::ArrayShape;

pub mod array {
    pub use self::traits::ArrayShape;

    mod traits {
        pub trait ArrayShape {
            fn shape(&amp;self) -&gt; (usize, usize) {
                (0, 0)
            }
        }
    }
}

struct Array;

impl ArrayShape for Array {}

fn main() {
    println!(&quot;{:?}&quot;, Array.shape());  //~ error: source trait is inaccessible
}

trait MatrixShape: ArrayShape {
    fn nrows(&amp;self) -&gt; usize { self.shape().0 }  //~ error: source trait is inaccessible
}

fn show() {
    println!(&quot;{:?}&quot;, (&amp;Array as &amp;ArrayShape).shape());  //~ error: source trait is inaccessible
}"><pre class="notranslate"><span class="pl-k">use</span> array<span class="pl-kos">::</span><span class="pl-v">ArrayShape</span><span class="pl-kos">;</span>

<span class="pl-k">pub</span> <span class="pl-k">mod</span> array <span class="pl-kos">{</span>
    <span class="pl-k">pub</span> <span class="pl-k">use</span> <span class="pl-k">self</span><span class="pl-kos">::</span>traits<span class="pl-kos">::</span><span class="pl-v">ArrayShape</span><span class="pl-kos">;</span>

    <span class="pl-k">mod</span> traits <span class="pl-kos">{</span>
        <span class="pl-k">pub</span> <span class="pl-k">trait</span> <span class="pl-smi">ArrayShape</span> <span class="pl-kos">{</span>
            <span class="pl-k">fn</span> <span class="pl-en">shape</span><span class="pl-kos">(</span><span class="pl-c1">&amp;</span><span class="pl-smi">self</span><span class="pl-kos">)</span> -&gt; <span class="pl-kos">(</span><span class="pl-smi">usize</span><span class="pl-kos">,</span> <span class="pl-smi">usize</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
                <span class="pl-kos">(</span><span class="pl-c1">0</span><span class="pl-kos">,</span> <span class="pl-c1">0</span><span class="pl-kos">)</span>
            <span class="pl-kos">}</span>
        <span class="pl-kos">}</span>
    <span class="pl-kos">}</span>
<span class="pl-kos">}</span>

<span class="pl-k">struct</span> <span class="pl-smi">Array</span><span class="pl-kos">;</span>

<span class="pl-k">impl</span> <span class="pl-smi">ArrayShape</span> <span class="pl-k">for</span> <span class="pl-smi">Array</span> <span class="pl-kos">{</span><span class="pl-kos">}</span>

<span class="pl-k">fn</span> <span class="pl-en">main</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
    <span class="pl-en">println</span><span class="pl-en">!</span><span class="pl-kos">(</span><span class="pl-s">"{:?}"</span>, <span class="pl-v">Array</span>.shape<span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">;</span>  <span class="pl-c">//~ error: source trait is inaccessible</span>
<span class="pl-kos">}</span>

<span class="pl-k">trait</span> <span class="pl-smi">MatrixShape</span><span class="pl-kos">:</span> <span class="pl-smi">ArrayShape</span> <span class="pl-kos">{</span>
    <span class="pl-k">fn</span> <span class="pl-en">nrows</span><span class="pl-kos">(</span><span class="pl-c1">&amp;</span><span class="pl-smi">self</span><span class="pl-kos">)</span> -&gt; <span class="pl-smi">usize</span> <span class="pl-kos">{</span> <span class="pl-smi">self</span><span class="pl-kos">.</span><span class="pl-en">shape</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-c1">0</span> <span class="pl-kos">}</span>  <span class="pl-c">//~ error: source trait is inaccessible</span>
<span class="pl-kos">}</span>

<span class="pl-k">fn</span> <span class="pl-en">show</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
    <span class="pl-en">println</span><span class="pl-en">!</span><span class="pl-kos">(</span><span class="pl-s">"{:?}"</span>, <span class="pl-kos">(</span>&amp;<span class="pl-v">Array</span> <span class="pl-k">as</span> &amp;<span class="pl-v">ArrayShape</span><span class="pl-kos">)</span>.shape<span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">;</span>  <span class="pl-c">//~ error: source trait is inaccessible</span>
<span class="pl-kos">}</span></pre></div>
<h3 dir="auto">Version</h3>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="rustc 1.0.0-nightly (458a6a2f6 2015-01-25 21:20:37 +0000)"><pre class="notranslate"><code class="notranslate">rustc 1.0.0-nightly (458a6a2f6 2015-01-25 21:20:37 +0000)
</code></pre></div>
<hr>
<h1 dir="auto">Original issue</h1>
<p dir="auto">STR</p>
<div class="highlight highlight-source-rust notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="use array::ArrayShape;

pub mod array {
    pub use self::traits::ArrayShape;

    mod traits {
        pub trait ArrayShape {
            fn shape(&amp;self) -&gt; (uint, uint) {
                (0, 0)
            }
        }
    }
}

struct Array;

// `ArrayShape` is available in this scope, it can be implemented ...
impl ArrayShape for Array {}

fn main() {
    // ... and can also be used
    println!(&quot;{}&quot;, Array.shape());
}

// But this super trait doesn't work
#[cfg(not(working))]
trait MatrixShape: ArrayShape {
    fn nrows(&amp;self) -&gt; uint { self.shape().val0() }
}

#[cfg(not(working))]
fn bad() {
    // This doesn't work either
    println!(&quot;{}&quot;, (&amp;Array as &amp;ArrayShape).shape());
}"><pre class="notranslate"><span class="pl-k">use</span> array<span class="pl-kos">::</span><span class="pl-v">ArrayShape</span><span class="pl-kos">;</span>

<span class="pl-k">pub</span> <span class="pl-k">mod</span> array <span class="pl-kos">{</span>
    <span class="pl-k">pub</span> <span class="pl-k">use</span> <span class="pl-k">self</span><span class="pl-kos">::</span>traits<span class="pl-kos">::</span><span class="pl-v">ArrayShape</span><span class="pl-kos">;</span>

    <span class="pl-k">mod</span> traits <span class="pl-kos">{</span>
        <span class="pl-k">pub</span> <span class="pl-k">trait</span> <span class="pl-smi">ArrayShape</span> <span class="pl-kos">{</span>
            <span class="pl-k">fn</span> <span class="pl-en">shape</span><span class="pl-kos">(</span><span class="pl-c1">&amp;</span><span class="pl-smi">self</span><span class="pl-kos">)</span> -&gt; <span class="pl-kos">(</span><span class="pl-smi">uint</span><span class="pl-kos">,</span> <span class="pl-smi">uint</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
                <span class="pl-kos">(</span><span class="pl-c1">0</span><span class="pl-kos">,</span> <span class="pl-c1">0</span><span class="pl-kos">)</span>
            <span class="pl-kos">}</span>
        <span class="pl-kos">}</span>
    <span class="pl-kos">}</span>
<span class="pl-kos">}</span>

<span class="pl-k">struct</span> <span class="pl-smi">Array</span><span class="pl-kos">;</span>

<span class="pl-c">// `ArrayShape` is available in this scope, it can be implemented ...</span>
<span class="pl-k">impl</span> <span class="pl-smi">ArrayShape</span> <span class="pl-k">for</span> <span class="pl-smi">Array</span> <span class="pl-kos">{</span><span class="pl-kos">}</span>

<span class="pl-k">fn</span> <span class="pl-en">main</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
    <span class="pl-c">// ... and can also be used</span>
    <span class="pl-en">println</span><span class="pl-en">!</span><span class="pl-kos">(</span><span class="pl-s">"{}"</span>, <span class="pl-v">Array</span>.shape<span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
<span class="pl-kos">}</span>

<span class="pl-c">// But this super trait doesn't work</span>
<span class="pl-c1">#<span class="pl-kos">[</span>cfg<span class="pl-kos">(</span>not<span class="pl-kos">(</span>working<span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">]</span></span>
<span class="pl-k">trait</span> <span class="pl-smi">MatrixShape</span><span class="pl-kos">:</span> <span class="pl-smi">ArrayShape</span> <span class="pl-kos">{</span>
    <span class="pl-k">fn</span> <span class="pl-en">nrows</span><span class="pl-kos">(</span><span class="pl-c1">&amp;</span><span class="pl-smi">self</span><span class="pl-kos">)</span> -&gt; <span class="pl-smi">uint</span> <span class="pl-kos">{</span> <span class="pl-smi">self</span><span class="pl-kos">.</span><span class="pl-en">shape</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">val0</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-kos">}</span>
<span class="pl-kos">}</span>

<span class="pl-c1">#<span class="pl-kos">[</span>cfg<span class="pl-kos">(</span>not<span class="pl-kos">(</span>working<span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">]</span></span>
<span class="pl-k">fn</span> <span class="pl-en">bad</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
    <span class="pl-c">// This doesn't work either</span>
    <span class="pl-en">println</span><span class="pl-en">!</span><span class="pl-kos">(</span><span class="pl-s">"{}"</span>, <span class="pl-kos">(</span>&amp;<span class="pl-v">Array</span> <span class="pl-k">as</span> &amp;<span class="pl-v">ArrayShape</span><span class="pl-kos">)</span>.shape<span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
<span class="pl-kos">}</span></pre></div>
<p dir="auto">Output:</p>
<div class="highlight highlight-source-rust notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="trait.rs:28:31: 28:43 error: source trait is inaccessible
trait.rs:28     fn nrows(&amp;self) -&gt; uint { self.shape().val0() }
                                          ^~~~~~~~~~~~
trait.rs:28:31: 28:43 note: module `traits` is private
trait.rs:28     fn nrows(&amp;self) -&gt; uint { self.shape().val0() }
                                          ^~~~~~~~~~~~
trait.rs:34:20: 34:51 error: source trait is inaccessible
trait.rs:34     println!(&quot;{}&quot;, (&amp;Array as &amp;ArrayShape).shape());
                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
note: in expansion of format_args!
&lt;std macros&gt;:2:23: 2:77 note: expansion site
&lt;std macros&gt;:1:1: 3:2 note: in expansion of println!
trait.rs:34:5: 34:53 note: expansion site
trait.rs:34:20: 34:51 note: module `traits` is private
trait.rs:34     println!(&quot;{}&quot;, (&amp;Array as &amp;ArrayShape).shape());
                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
note: in expansion of format_args!
&lt;std macros&gt;:2:23: 2:77 note: expansion site
&lt;std macros&gt;:1:1: 3:2 note: in expansion of println!
trait.rs:34:5: 34:53 note: expansion site
error: aborting due to 2 previous errors"><pre class="notranslate"><span class="pl-k">trait</span><span class="pl-kos">.</span><span class="pl-smi">rs</span><span class="pl-kos">:</span><span class="pl-c1">28</span><span class="pl-kos">:</span><span class="pl-c1">31</span><span class="pl-kos">:</span> <span class="pl-c1">28</span><span class="pl-kos">:</span><span class="pl-c1">43</span> <span class="pl-smi">error</span><span class="pl-kos">:</span> source trait is inaccessible
<span class="pl-k">trait</span><span class="pl-kos">.</span><span class="pl-smi">rs</span><span class="pl-kos">:</span><span class="pl-c1">28</span>     <span class="pl-k">fn</span> <span class="pl-smi">nrows</span><span class="pl-kos">(</span><span class="pl-c1">&amp;</span><span class="pl-smi">self</span><span class="pl-kos">)</span> -&gt; <span class="pl-smi">uint</span> <span class="pl-kos">{</span> <span class="pl-smi">self</span><span class="pl-kos">.</span>shape<span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">.</span>val0<span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-kos">}</span>
                                          ^~~~~~~~~~~~
<span class="pl-k">trait</span><span class="pl-kos">.</span>rs<span class="pl-kos">:</span><span class="pl-c1">28</span><span class="pl-kos">:</span><span class="pl-c1">31</span><span class="pl-kos">:</span> <span class="pl-c1">28</span><span class="pl-kos">:</span><span class="pl-c1">43</span> note<span class="pl-kos">:</span> module `traits` is private
<span class="pl-k">trait</span><span class="pl-kos">.</span>rs<span class="pl-kos">:</span><span class="pl-c1">28</span>     <span class="pl-k">fn</span> <span class="pl-smi">nrows</span><span class="pl-kos">(</span><span class="pl-c1">&amp;</span><span class="pl-smi">self</span><span class="pl-kos">)</span> -&gt; <span class="pl-smi">uint</span> <span class="pl-kos">{</span> <span class="pl-smi">self</span><span class="pl-kos">.</span>shape<span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">val0</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-kos">}</span>
                                          ^~~~~~~~~~~~
<span class="pl-k">trait</span><span class="pl-kos">.</span>rs<span class="pl-kos">:</span><span class="pl-c1">34</span><span class="pl-kos">:</span><span class="pl-c1">20</span><span class="pl-kos">:</span> <span class="pl-c1">34</span><span class="pl-kos">:</span><span class="pl-c1">51</span> error<span class="pl-kos">:</span> source trait is inaccessible
<span class="pl-k">trait</span><span class="pl-kos">.</span>rs<span class="pl-kos">:</span><span class="pl-c1">34</span>     <span class="pl-en">println</span><span class="pl-en">!</span><span class="pl-kos">(</span><span class="pl-s">"{}"</span>, <span class="pl-kos">(</span>&amp;<span class="pl-v">Array</span> <span class="pl-k">as</span> &amp;<span class="pl-v">ArrayShape</span><span class="pl-kos">)</span>.shape<span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
note<span class="pl-kos">:</span> in expansion of format_args!
&lt;std <span class="pl-smi">macros</span>&gt;<span class="pl-kos">:</span><span class="pl-c1">2</span><span class="pl-kos">:</span><span class="pl-c1">23</span><span class="pl-kos">:</span> <span class="pl-c1">2</span><span class="pl-kos">:</span><span class="pl-c1">77</span> note<span class="pl-kos">:</span> expansion<span class="pl-kos"></span> site
&lt;std macros&gt;<span class="pl-kos">:</span><span class="pl-c1">1</span><span class="pl-kos">:</span><span class="pl-c1">1</span><span class="pl-kos">:</span> <span class="pl-c1">3</span><span class="pl-kos">:</span><span class="pl-c1">2</span> note<span class="pl-kos">:</span> <span class="pl-k">in</span> expansion of println!
trait<span class="pl-kos">.</span><span class="pl-c1">rs</span><span class="pl-kos">:</span><span class="pl-c1">34</span><span class="pl-kos">:</span><span class="pl-c1">5</span><span class="pl-kos">:</span> <span class="pl-c1">34</span><span class="pl-kos">:</span><span class="pl-c1">53</span> note<span class="pl-kos">:</span> expansion site
<span class="pl-k">trait</span><span class="pl-kos">.</span><span class="pl-c1">rs</span><span class="pl-kos">:</span><span class="pl-c1">34</span><span class="pl-kos">:</span><span class="pl-c1">20</span><span class="pl-kos">:</span> <span class="pl-c1">34</span><span class="pl-kos">:</span><span class="pl-c1">51</span> note<span class="pl-kos">:</span> module `traits` is private
<span class="pl-k">trait</span><span class="pl-kos">.</span><span class="pl-c1">rs</span><span class="pl-kos">:</span><span class="pl-c1">34</span>     <span class="pl-en">println</span><span class="pl-en">!</span><span class="pl-kos">(</span><span class="pl-s">"{}"</span>, <span class="pl-kos">(</span>&amp;<span class="pl-v">Array</span> <span class="pl-k">as</span> &amp;<span class="pl-v">ArrayShape</span><span class="pl-kos">)</span>.shape<span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
note<span class="pl-kos">:</span> <span class="pl-k">in</span> expansion of format_args!
&lt;std macros&gt;<span class="pl-kos">:</span><span class="pl-c1">2</span><span class="pl-kos">:</span><span class="pl-c1">23</span><span class="pl-kos">:</span> <span class="pl-c1">2</span><span class="pl-kos">:</span><span class="pl-c1">77</span> note<span class="pl-kos">:</span> expansion site
&lt;std macros&gt;<span class="pl-kos">:</span><span class="pl-c1">1</span><span class="pl-kos">:</span><span class="pl-c1">1</span><span class="pl-kos">:</span> <span class="pl-c1">3</span><span class="pl-kos">:</span><span class="pl-c1">2</span> note<span class="pl-kos">:</span> <span class="pl-k">in</span> expansion of println!
trait<span class="pl-kos">.</span><span class="pl-c1">rs</span><span class="pl-kos">:</span><span class="pl-c1">34</span><span class="pl-kos">:</span><span class="pl-c1">5</span><span class="pl-kos">:</span> <span class="pl-c1">34</span><span class="pl-kos">:</span><span class="pl-c1">53</span> note<span class="pl-kos">:</span> expansion site
error<span class="pl-kos">:</span> aborting due to <span class="pl-c1">2</span> previous errors</pre></div>
<p dir="auto">I'm no longer sure if this is a bug or is intended? The <code class="notranslate">impl</code> block works, but the super trait and the trait object don't. Do the latter two have different scoping/privacy rules?</p>
<p dir="auto">Version:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="rustc 0.12.0-pre (795f6ae82 2014-08-04 07:01:10 +0000)"><pre class="notranslate"><code class="notranslate">rustc 0.12.0-pre (795f6ae82 2014-08-04 07:01:10 +0000)
</code></pre></div>